Installation and Update of Cartridges in a Multi-Tenant Platform-as-a-Service (PaaS) System

ABSTRACT

Implementations for installation and update of cartridges in a multi-tenant Platform-as-a-Service (PaaS) system are disclosed. A method of the disclosure includes receiving, by a processing device of a node of a multi-tenant PaaS system, an indication to initiate an update process for cartridges of the node, receiving a cartridge file package for storage at the node, storing the cartridge file package to a cartridge library of the node, and maintaining the cartridge file package in the cartridge library as a newest version of a template cartridge that corresponds to the cartridge file package.

RELATED APPLICATION

This application claims the benefit under 35 U.S.C. §119(e) of U.S.Patent Provisional Application No. 61/925,381, filed on Jan. 9, 2014,the entirety of which is incorporated herein by reference.

TECHNICAL FIELD

The implementations of the disclosure relate generally to computinginfrastructures and, more specifically, relate to installation andupdate of cartridges in a multi-tenant Platform-as-a-Service (PaaS)system.

BACKGROUND

Currently, a variety of Platform-as-a-Service (PaaS) offerings existthat include software and/or hardware facilities for facilitating theexecution of web applications. In some cases, these PaaS offeringsutilize a cloud computing environment (the “cloud”) to support executionof the web applications. Cloud computing is a computing paradigm inwhich a customer pays a “cloud provider” to execute a program oncomputer hardware owned and/or controlled by the cloud provider. It iscommon for cloud providers to make virtual machines hosted on itscomputer hardware available to customers for this purpose.

The cloud provider typically provides an interface that a customer canuse to requisition virtual machines and associated resources such asprocessors, storage, and network services, etc., as well as an interfacea customer can use to install and execute the customer's program on thevirtual machines that the customer requisitions, together withadditional software on which the customer's program depends. For somesuch programs, this additional software can include software components,such as a kernel and an operating system, and/or middleware and aframework. Customers that have installed and are executing theirprograms “in the cloud” typically communicate with the executing programfrom remote geographic locations using Internet protocols.

PaaS offerings typically facilitate deployment of web applicationswithout the cost and complexity of buying and managing the underlyinghardware, software, and provisioning hosting capabilities, providing thefacilities to support the complete life cycle of building, delivering,and servicing web applications that are entirely available from theInternet. Typically, these facilities operate as one or more virtualmachines (VMs) running on top of a hypervisor in a host server.

BRIEF DESCRIPTION OF THE DRAWINGS

The disclosure will be understood more fully from the detaileddescription given below and from the accompanying drawings of variousimplementations of the disclosure. The drawings, however, should not betaken to limit the disclosure to the specific implementations, but arefor explanation and understanding only.

FIG. 1 is a block diagram of a network architecture in whichimplementations of the disclosure may operate.

FIG. 2 is a block diagram of a Platform-as-a-Service (PaaS) systemarchitecture according to an implementation of the disclosure.

FIG. 3 is a block diagram of a communication architecture of amulti-tenant PaaS for providing installation and update of cartridges inthe multi-tenant PaaS system according to an implementation of thedisclosure.

FIG. 4 is a flow diagram illustrating a method for upgrading a templatecartridge in a multi-tenant PaaS according to an implementation of thedisclosure.

FIG. 5 is a flow diagram illustrating a method for upgrading a cartridgeinstance in a multi-tenant PaaS system according to an implementation ofthe disclosure.

FIG. 6 illustrates a block diagram of one implementation of a computersystem.

DETAILED DESCRIPTION

Implementations of the disclosure provide installation and update ofcartridges in a multi-tenant Platform-as-a-Service (PaaS) system. In oneimplementation, a cartridge of the PaaS system may be written by acartridge author and utilized in deployed applications by applicationdevelopers. The PaaS provider controller 140 may include a broker server142 with an update component 150 to manage installation and updates ofcartridges at the VMs 111, 112, 121, 122. The update component 150 maycommunicate with a node update component 155 on each VM 111, 112, 121,122 of the multi-tenant PaaS to manage installation and update ofcartridges for the multi-tenant PaaS.

In one implementation, the update component 150 determines that one ormore nodes (e.g., VMs 111, 112, 121, 122) of the multi-tenant PaaS areto receive a new cartridge installation or a cartridge installationupdate. The new cartridge installations or updates may arrive in theform of a file package. The node update component 155 manages theinstall or update process for the corresponding node (e.g., VM 111, 112,121, 122) by maintaining versions of each file package for a cartridge.For example, if a cartridge of the node has been updated twice, the nodeupdate component 155 maintains the three different versions of thecartridge in a cartridge library of the node. The node update component155 is also responsible for initiating and managing the updates for eachinstance of the cartridge running on the node.

Previously, PaaS systems maintained the most recent version of thecartridge. As a result, any applications on the node utilizing thecartridge had to be updated at the time of the template cartridgeupgrade. If the node hosted a large number of applications, this couldcause outages of applications that may have been in an unknown statewhile the new files were being installed on the node and theapplications' services restarted. Implementations of the disclosureovercome this problem by introducing a node update component to managethe install and update process for the node and maintain isolatedversions of each cartridge file package installed at the node. The nodeupdate component further oversees the update of each cartridge instancerunning on the node, thereby providing efficient cartridge updates foreach application.

FIG. 1 is a block diagram of a network architecture 100 in whichimplementations of the disclosure may operate. The network architecture100 includes a cloud 130 managed by a cloud provider system 104. Thecloud provider system 104 provides nodes to execute software and/orother processes. In some implementations, these nodes are virtualmachines (VMs), such as VMs 111, 112, 121, and 122 hosted in cloud 130.Each VM 111, 112, 121, 122 is hosted on a physical machine, such as host1 110 through host N 120, configured as part of the cloud 130. The VMs111, 112, 121, 122 may be executed by OSes 115, 125 on each host machine110, 120.

In some implementations, the host machines 110, 120 are often located ina data center. For example, VMs 111 and 112 are hosted on physicalmachine 110 in cloud 130 provided by cloud provider 104. Users caninteract with applications executing on the cloud-based VMs 111, 112,121, 122 using client computer systems, such as clients 160, 170 and180, via corresponding web browser applications 161, 171 and 181. Inother implementations, the applications may be hosted directly on hosts1 through N 110-120 without the use of VMs (e.g., a “bare metal”implementation), and in such an implementation, the hosts themselves arereferred to as “nodes”.

Clients 160, 170 and 180 are connected to hosts 110, 120 on cloud 130and the cloud provider system 104 via a network 102, which may be aprivate network (e.g., a local area network (LAN), a wide area network(WAN), intranet, or other similar private networks) or a public network(e.g., the Internet). Each client 160, 170, 180 may be a mobile device,a PDA, a laptop, a desktop computer, a tablet computing device, a serverdevice, or any other computing device. Each host 110, 120 may be aserver computer system, a desktop computer or any other computingdevice. The cloud provider system 104 may include one or more machinessuch as server computers, desktop computers, etc.

In one implementation, the cloud provider system 104 is coupled to acloud controller 108 via the network 102. The cloud controller 108 mayreside on one or more machines (e.g., server computers, desktopcomputers, etc.) and may manage the execution of applications in thecloud 130. In some implementations, cloud controller 108 receivescommands from PaaS provider controller 140. Based on these commands, thecloud controller 108 provides data (e.g., such as pre-generated images)associated with different applications to the cloud provider system 104.In some implementations, the data may be provided to the cloud provider104 and stored in an image repository 106, or in an image repository(not shown) located on each host 110, 120, or in an image repository(not shown) located on each VM 111, 112, 121, 122. This data is used forthe execution of applications for a multi-tenant PaaS system managed bythe PaaS provider controller 140.

In one implementation, a cartridge of the PaaS system may be written bya cartridge author and utilized in deployed applications by applicationdevelopers. The PaaS provider controller 140 may include a broker server142 with an update component 150 to manage installation and updates ofcartridges at the VMs 111, 112, 121, 122. The update component 150 maycommunicate with a node update component 155 on each VM 111, 112, 121,122 of the multi-tenant PaaS to manage installation and update ofcartridges for the multi-tenant PaaS.

In one implementation, the update component 150 determines that one ormore nodes (e.g., VMs 111, 112, 121, 122) of the multi-tenant PaaS areto receive a new cartridge installation or a cartridge installationupdate. The discovery of new cartridges or cartridge updates may occurdynamically via any upload/notification component. For example, a sourcecode management system (sometimes referred to as a “SCM” or revisioncontrol system) may be utilized for cartridge discovery. The newcartridge installations or updates may arrive in the form of a filepackage. The node update component 155 manages the install or updateprocess for the corresponding node (e.g., VM 111, 112, 121, 122) bymaintaining versions of each file package for a cartridge. For example,if a cartridge of the node has been updated twice, the node updatecomponent 155 maintains the three different versions of the cartridge ina cartridge library of the node. The node update component 155 is alsoresponsible for initiating and managing the updates for each instance ofthe cartridge running on the node. Further details of providinginstallation and update of cartridges in a multi-tenant PaaS system aredescribed below with respect to FIG. 2.

While various implementations are described in terms of the environmentdescribed above, those skilled in the art will appreciate that thefacility may be implemented in a variety of other environments includinga single, monolithic computer system, as well as various othercombinations of computer systems or similar devices connected in variousways. For example, the data from the image repository 106 may rundirectly on a physical host 110, 120 instead of being instantiated on aVM 111, 112, 121, 122.

FIG. 2 is a block diagram of a PaaS system architecture 200 according toan implementation of the disclosure. The PaaS architecture 200 allowsusers to launch software applications in a cloud computing environment,such as cloud computing environment provided in network architecture 100described with respect to FIG. 1. The PaaS system architecture 200, inone implementation, includes a client layer 210, a broker layer 220, anda node layer 230.

In one implementation, the client layer 210 resides on a client machine,such as a workstation of a software developer, and provides an interfaceto a user of the client machine to a broker layer 220 of the PaaS system200. For example, the broker layer 220 may facilitate the creation anddeployment on the cloud (via node layer 230) of software applicationsbeing developed by an end user at client layer 210.

In one implementation, the client layer 210 includes a source codemanagement system 212, sometimes referred to as “SCM” or revisioncontrol system. One example of such an SCM or revision control system isGit, available as open source software. Another example of an SCM orrevision control system is Debian, also available as open sourcesoftware. Git, Debian, and other such distributed SCM systems, usuallyinclude a working directory for making changes, and a local softwarerepository for storing the changes for each application associated withthe end user of the PaaS system 200. The packaged software applicationcan then be “pushed” from the local SCM repository to a remote SCMrepository, such as app repos 233 a, 233 b, 233 c, at the node(s) 232 a,232 b, 232 c running the associated application. From the remote SCMrepository 233 a, 233 b, 233 c, the code may be edited by others withaccess, or the application may be executed by a machine. Other SCMsystems work in a similar manner.

The client layer 210, in one implementation, also includes a set ofcommand line tools 214 that a user can utilize to create, launch, andmanage applications. In one implementation, the command line tools 214can be downloaded and installed on the user's client machine, and can beaccessed via a command line interface or a graphical user interface, orsome other type of interface. In one implementation, the command linetools 214 make use of an application programming interface (“API”) ofthe broker layer 220 and perform other applications management tasks inan automated fashion using other interfaces, as will be described inmore detail further below in accordance with some implementations.

In one implementation, the broker layer 220 acts as middleware betweenthe client layer 210 and the node layer 230. The node layer 230 includesthe nodes 232 a-c on which software applications 235 a-c are provisionedand executed. In one implementation, each node 232 a-c is a VMprovisioned by an Infrastructure-as-a-Service (IaaS) provider. In otherimplementations, the nodes 232 a-c may be physical machines (e.g., baremetal) or VMs residing on a single physical machine and running gears(discussed below) that provide functionality of applications of amulti-tenant PaaS system. In one implementation, the broker layer 220 isimplemented on one or more machines, such as server computers, desktopcomputers, etc. In some implementations, the broker layer 220 may beimplemented on one or more machines separate from machines implementingeach of the client layer 210 and the node layer 230, or may implementedtogether with the client layer 210 and/or the node layer 230 on one ormore machines, or some combination of the above.

In one implementation, the broker layer 220 includes a broker 222 thatcoordinates requests from the client layer 210 with actions to beperformed at the node layer 230. One such request is new applicationcreation. In one implementation, when a user, using the command linetools 214 at client layer 210, requests the creation of a newapplication 235 a-c, or some other action to manage the application 235a-c, the broker 222 first authenticates the user using an authenticationservice 224. In one implementation, the authentication service maycomprise custom authentication methods, or standard protocols such asSAML, OAuth, etc. Once the user has been authenticated and allowedaccess to the system by authentication service 224, the broker 222 usesa server orchestration system 226 to collect information andconfiguration information about the nodes 232 a-c.

In one implementation, the broker 222 uses the Marionette CollectiveTM(“MCollective™”) framework available from Puppet LabsTM as the serverorchestration system 226, but other server orchestration systems mayalso be used. The server orchestration system 226, in oneimplementation, functions to coordinate server-client interactionbetween multiple (sometimes a large number of) servers. In oneimplementation, the servers being orchestrated are nodes 232 a-c, whichare acting as application servers and web servers.

In one implementation, the broker 222 manages the business logic andmodel representing the nodes 232 a-c and the applications 235 a-cresiding on the nodes, and acts as a controller that generates theactions requested by users via an API of the client command line tools214. The server orchestration system 226 then takes the actionsgenerated by the broker 222 and orchestrates their execution on the manynodes 232 a-c managed by the system.

In one implementation, the information collected about the nodes 232 a-ccan be stored in a data store 228. In one implementation, the data store228 can be a locally-hosted database or file store, or it can be a cloudbased storage service provided by a Storage-as-a-Service (SaaS)provider, such as Amazon™ S3™ (Simple Storage Service). The broker 222uses the information about the nodes 232 a-c and their applications 235a-c to model the application hosting service and to maintain recordsabout the nodes. In one implementation, data of a node 232 a-c is storedin the form of a JavaScript Object Notation (JSON) blob or string thatmaintains key-value pairs to associate a unique identifier, a hostname,a list of applications, and other such attributes with the node.

In implementations of the disclosure, the PaaS system architecture 200of FIG. 2 is a multi-tenant PaaS environment. In a multi-tenant PaaSenvironment, each node 232 a-c runs multiple applications 235 a-c thatmay be owned or managed by different users and/or organizations. Assuch, a first customer's deployed applications 235 a-c may co-exist withany other customer's deployed applications on the same node 232 (VM)that is hosting the first customer's deployed applications 235 a-c. Insome implementations, portions of an application are run on multipledifferent nodes 232 a-c. For example, as shown in FIG. 2, components ofapplication 1 235 a are run in both node 232 a and node 232b. Similarly,application 2 235 b is run in node 232 a and node 232 c, whileapplication 3 235 c is run in node 232 b and node 232 c.

In addition, each node also maintains a cartridge library 237. Thecartridge library 237 maintains multiple software components (referredto herein as cartridges) that may be utilized by applications 235 a-cdeployed on node 232 a-c. A cartridge can represent a form of supportsoftware (or middleware) providing the functionality, such asconfiguration templates, scripts, and/or dependencies, to run anapplication 235 a-c and/or add a feature to an application, 235 a-c. Inone implementation, the cartridges support languages such as, but notlimited to, JBoss™, PHP, Ruby, Python, Perl, and so on. In addition,cartridges may be provided that support databases, such as MySQL™,PostgreSQL™, Mongo™, and others. Cartridges may also be available thatsupport the build and continuous integration environments, such as aJenkins cartridge. Lastly, cartridges may be provided to supportmanagement capabilities, such as PHPmyadmin, RockMongo™,10gen-mms-agent, cron scheduler, and HAProxy, for example. Adding aninstance 242 of a cartridge from cartridge library 237 to an application235 a-c provides a capability for the application 235 a-c, without thecustomer who owns the application having to administer or update theincluded capability.

In one implementation, each node 232 a-c is implemented as a VM and hasan operating system 234 a-c that can execute applications 235 a-c usingthe app repos 233 a-c and cartridge libraries 237 that are resident onthe nodes 232 a-c. Each node 302 a-b also includes a serverorchestration system agent (not shown) configured to track and collectinformation about the node 232 a-c and to perform management actions onthe node 232 a-c. Thus, in one implementation, using MCollectiveTM asthe server orchestration system 226, the server orchestration systemagent (not shown) at the node 232 a-c can act as a MCollectiveTM server.The server orchestration system 226 would then act as the MCollectiveTMclient that can send requests, queries, and commands to theMCollectiveTM server agent on node 232 a-c.

As previously mentioned, cartridges provide the underlying supportsoftware that implements the functionality of applications 235 a-c. Inone implementation, an application 235 a-c may utilize one or morecartridge instances 242 that are run in one or more resource-constrainedgears 240 on nodes 232 a-c. Cartridge library 237 provides an OS-basedlocation, outside of all application gears 240, that acts as a sourcefor cartridge instantiations 242 that provide functionality for anapplication 235 a-c.

An application 235 a-c may use more than one cartridge instance 240 aspart of providing functionality for the application 235 a-b. One exampleof this is a JavaEE application that uses a JBoss™ AS7 cartridge with asupporting MySQLTM database provided by a MySQL™ cartridge. Eachcartridge instance 242 may include a software repository that providesthe particular functionality of the cartridge instance 242.

As mentioned above, a gear 240 is a resource-constrained process spaceon the node 232 a-c to execute functionality of an application 235 a-c.In some implementations, a gear 240 is established by the node 232 a-cwith resource boundaries, including a limit and/or designation of theamount of memory, amount of storage, and security types and/or labels tobe applied to any functions executed by the gear 240. In oneimplementation, gears 240 may be established using the Linux Containers(LXC) virtualization method. In further implementations, gears 240 mayalso be established using cgroups, SELinux™, and kernel namespaces, toname a few examples. As illustrated in FIG. 2, cartridges instances 242for an application 235 a-c may execute in gears 240 dispersed over morethan one node 232 a-b. In other implementations, cartridge instances 242for an application 235a-c may run in one or more gears 240 on the samenode 232 a-c.

Implementations of the disclosure provide installation and updates of acartridge instance 242 by the multi-tenant PaaS. In one implementation,broker layer 220 includes an update component 250 to provide support forthe installation and updates of cartridge instances 242 of themulti-tenant PaaS 200. In one implementation, the update component 250is part of broker 222. The update component 250 may be the same asupdate component 150 described with respect to FIG. 1. In addition,nodes 232 a-c each include a node update component 255 that iscommunicably coupled to update component 250 of broker 222. In oneimplementation, node update component 255 may be the same as node updatecomponent 155 described with respect to FIG. 1. Further details of theinteraction between update component 250 and node update component 2555to install and update template cartridges of cartridge library 237 andcartridge instances 242 are described below with respect to FIG. 3.

FIG. 3 is a block diagram illustrating a communication architecture 300of a multi-tenant PaaS for implementing installation and update ofcartridges. Architecture 300 includes the broker 222 in communicationwith a node 232. Broker 222 and node 232, and their sub-components, maybe the same as their counterparts described with respect to FIG. 2.Broker 222 may include an update component 250 as described with respectto FIG. 2. The broker 222 utilizes its update component 250 to assist inmanaging installation and updates of cartridges 310, 312, 314, 320, 322,324 at node 232. The update component 250 may communicate with a nodeupdate component 255 on the node 232 to manage installation and updateof cartridges 310, 312, 314, 320, 322, 324 for the multi-tenant PaaS.

In one implementation, the update component 250 determines that the node232 is to receive a new or updated cartridge installation. As discussedabove, the discovery of new cartridges or cartridge updates by theupdate component 250 may occur dynamically via any upload/notificationcomponent. For example, the SCM of the multi-tenant PaaS may be utilizedfor cartridge discovery. The update component 250 may then contact thenode update component 255 to initiate the update process. The nodeupdate component 255 then oversees the install/update process at thenode 232. Node update component 255 may oversee the install/updateprocess for both of template cartridges 310, 312, 314 maintained in thecartridge library 237 and instances 320, 322, 324 of the templatecartridges deployed to gears 240 of applications 235 a, 235 b hosted bythe node 232. New cartridge installations or updates may arrive in theform of a file package.

The node update component 255 saves the file package to the cartridgelibrary 237, which may be considered an indexed data store. The nodeupdate component 255 maintains in the cartridge library 237 everyversion of file packages received for a cartridge. As such, the nodeupdate component 255 provides cartridge version maintenance for thecartridges maintained in the cartridge library 237.

For example, assume that cartridge library 237 includes a templatecartridge A, versions 1 310 a and 2 310 b. When the node updatecomponent 255 receives notice that a new version 3 of cartridge A isavailable and then initiates download of that cartridge A, version 3 310c. The node update component 255 saves the file package to the cartridgelibrary 237 as template cartridge A, version 3 310 c. The previousversions 310 a, 310 b of the template cartridge A are also stillmaintained in the cartridge library 237 and isolated from one another.As shown, template library 237 may also include other cartridges B and Cand their corresponding isolated versions 312 a, 312 b, 314, as well.

The cartridge library 237 of implementations of the disclosure allowsthe node 232 of a multi-tenant PaaS to retrieve all versions of a givenset of files currently being used by an application 235 a, 235 b hostedby the node 232. As such, applications 235 a, 235 b can be upgradedsafely within any provided or indicated maintenance windows as both newand old versions of the file packages for the cartridges are available.In addition, the multi-tenant PaaS is also able to create newapplications utilizing older versions of cartridges, which some users ofthe multi-tenant PaaS may request and/or prefer. For example,environments or enterprises that are heavily-regulated and/or audited,such as the pharmaceutical industry, may prefer such a feature. This isillustrated in FIG. 3 where app 1 235 a maintains an older version 1 ofcartridge A 320 a, instead of the newest version 3 310 c of cartridge Athat is available in the template directory 237.

Once the template cartridge 310, 312, 314 has been updated, the nodeupdate component 255 may manage the cartridge instance 320, 322, 324upgrade process as well. The node update component 255 may examine eachgear 240 running on the node 232, and determine whether the cartridgeinstances 320, 322, 324 running on the gear 240 are up-to-date. In someimplementations, the application developer of the application 235 a mayprefer not to upgrade the cartridge instance 320, 322, 324 (e.g., forthe reasons discussed above such as heavy regulation or auditing). Insuch a case, the application developer may set a flag or other indicatorthat instructs the node update component 255 to bypass the cartridgeinstance 320, 322, 324 for upgrade purposes.

If the node update component 255 does not identify a flag or otherindicator to prohibit upgrades, then the node update component 255compares the version of the cartridge instance 320, 322, 324 deployed tothe gear 240 to the most-recent version of the corresponding templatecartridge 310, 312, 314 maintained in the cartridge library 237. If thecartridge instance is not up-to-date, then the node update component 255oversees the upgrade of the cartridge instance 320, 322, 324 to the mostrecent version of the template cartridge 310, 312, 324.

In some implementations, once all applications 235 a, 235 b on the node232 have been upgraded to the newest cartridge versions, the oldversion(s) of the cartridge that is no longer being used on the node 232may be removed. The node update component 255 may run a removal processat predetermined time intervals that scans all gears 240 of the node 232to determine whether any of the older versions of template cartridges310, 312, 314 can be removed (as they are not running or being utilizedon any gears 240). Any identified unused old versions of the templatecartridge 310, 312, 314 may then be removed from the cartridgerepository 237 by the node update component 255.

In one implementation, the cartridge library 237 also allows themulti-tenant PaaS to share read-only files across multiple applications235 a, 235 b without intervention from an application developer. Thissharing of real-only, immutable files may be enabled by including apointer 335 a-c to a user directory 330 a-c of a template cartridge 310a-c in the cartridge instance 320 a-c of that template cartridge 310a-c. The user directory 330 a-c of a template cartridge 310 a-c mayrefer to the directory of the cartridge 310 a-c that stores thecartridge binaries that are run by the application 235 a, 235 b. Byincluding a pointer 335 a-c to the user directory 330 a-c of thetemplate cartridge 310 a-c, implementations of the disclosure allow forefficient use of disk space by avoiding unnecessary duplication of filesbetween the template cartridge 310 a-c and cartridge instance 320 a-c.In one implementation, when a cartridge instance 320 a-c that includes apointer 335 a-c to a user directory 330 a-c of a template cartridge 310a-c is upgraded to a new version, the node update component 255 alsoupdates the pointer 335 a-c to point to the newer version of the userdirectory 330 a-c in the new version of the template cartridge 310 a-c.

FIG. 4 is a flow diagram illustrating a method 400 for upgrading atemplate cartridge in a multi-tenant PaaS according to an implementationof the disclosure. Method 400 may be performed by processing logic thatmay comprise hardware (e.g., circuitry, dedicated logic, programmablelogic, microcode, etc.), software (such as instructions run on aprocessing device), firmware, or a combination thereof. In oneimplementation, method 400 is performed by node update component 255described with respect to FIGS. 2 and 3.

Method 400 begins at block 410, where an indication is received at anode update component to initiate an update process for cartridges ofthe node. In one implementation, the indication may be received from anupdate component of a broker of a multi-tenant PaaS hosting the node.Then, at block 420, a cartridge file package is received at the node.

At block 430, the node determines that the download of the cartridgefile package is complete. Lastly, at block 440, the downloaded cartridgefile package is saved to a cartridge library of the node as a newestversion of a template cartridge corresponding to the cartridge filepackage. In one implementation, the cartridge library maintains one ormore previous versions of the template cartridge and these versions areeach isolated from one another.

FIG. 5 is a flow diagram illustrating a method 500 for upgrading acartridge instance in a multi-tenant PaaS system according to animplementation of the disclosure. Method 500 may be performed byprocessing logic that may comprise hardware (e.g., circuitry, dedicatedlogic, programmable logic, microcode, etc.), software (such asinstructions run on a processing device), firmware, or a combinationthereof. In one implementation, method 500 is performed by node updatecomponent 255 described with respect to FIGS. 2 and 3.

Method 500 begins at block 510, where a new version of a templatecartridge is added to a template library of a node. In oneimplementation, the new version of the template cartridge is addedaccording to method 400 described with respect to FIG. 4. At block 520,gears running on the node are accessed and cartridge instances deployedon the accessed gears are also accessed. For each accessed cartridgeinstance, method 500 then proceeds through blocks 530-570.

At decision block 530, it is determined whether the cartridge instanceis flagged for no upgrades. If so, then method 500 ends. If not, thenmethod 500 proceeds to decision block 540 where it is determined whetherthe version of the cartridge instance is the same as the newest versionof the corresponding template cartridge maintained in the cartridgelibrary. If so, then the cartridge instance is up-to-date and does nothave to be updated. If the cartridge instance version is not the same asthe newest version of the corresponding cartridge template, then method500 proceeds to block 550.

At block 550, the cartridge instance is upgraded to the newest versionof the template cartridge. Subsequently, at decision block 560, it isdetermined whether the previous cartridge instance (prior to upgrade)included a pointer to a user directory of the corresponding templatecartridge. If not, then method 500 ends. On the other hand, if the priorcartridge instance did include a pointer to the template cartridge userdirectory, then method 500 continues to block 570. At block 570, thepointer to the user directory in the cartridge instance is updated topoint to the user directory in the newest version of the templatedirectory. After all cartridge instances in the node have been accessed,method 500 ends.

FIG. 6 illustrates a diagrammatic representation of a machine in theexample form of a computer system 600 within which a set ofinstructions, for causing the machine to perform any one or more of themethodologies discussed herein, may be executed. In alternativeimplementations, the machine may be connected (e.g., networked) to othermachines in a LAN, an intranet, an extranet, or the Internet. Themachine may operate in the capacity of a server or a client device in aclient-server network environment, or as a peer machine in apeer-to-peer (or distributed) network environment. The machine may be apersonal computer (PC), a tablet PC, a set-top box (STB), a PersonalDigital Assistant (PDA), a cellular telephone, a web appliance, aserver, a network router, switch or bridge, or any machine capable ofexecuting a set of instructions (sequential or otherwise) that specifyactions to be taken by that machine. Further, while a single machine isillustrated, the term “machine” shall also be taken to include anycollection of machines that individually or jointly execute a set (ormultiple sets) of instructions to perform any one or more of themethodologies discussed herein.

The computer system 600 includes a processing device 602 (e.g.,processor, CPU, etc.), a main memory 604 (e.g., read-only memory (ROM),flash memory, dynamic random access memory (DRAM) (such as synchronousDRAM (SDRAM) or DRAM (RDRAM), etc.), a static memory 606 (e.g., flashmemory, static random access memory (SRAM), etc.), and a data storagedevice 618, which communicate with each other via a bus 608.

Processing device 602 represents one or more general-purpose processingdevices such as a microprocessor, central processing unit, or the like.More particularly, the processing device may be complex instruction setcomputing (CISC) microprocessor, reduced instruction set computer (RISC)microprocessor, very long instruction word (VLIW) microprocessor, orprocessor implementing other instruction sets, or processorsimplementing a combination of instruction sets. Processing device 602may also be one or more special-purpose processing devices such as anapplication specific integrated circuit (ASIC), a field programmablegate array (FPGA), a digital signal processor (DSP), network processor,or the like. The processing device 602 is configured to execute theprocessing logic 626 for performing the operations and steps discussedherein.

The computer system 600 may further include a network interface device622 communicably coupled to a network 664. The computer system 600 alsomay include a video display unit 610 (e.g., a liquid crystal display(LCD) or a cathode ray tube (CRT)), an alphanumeric input device 612(e.g., a keyboard), a cursor control device 614 (e.g., a mouse), and asignal generation device 620 (e.g., a speaker).

The data storage device 618 may include a machine-accessible storagemedium 624 on which is stored software 626 embodying any one or more ofthe methodologies of functions described herein. The software 626 mayalso reside, completely or at least partially, within the main memory604 as instructions 626 and/or within the processing device 602 asprocessing logic 626 during execution thereof by the computer system600; the main memory 604 and the processing device 602 also constitutingmachine-accessible storage media.

The machine-readable storage medium 624 may also be used to storeinstructions 626 to implement a node update component 255 to manageinstallation and update of cartridges in a multi-tenant PaaS, such asnode update component 255 described with respect to FIGS. 2 and 3,and/or a software library containing methods that call the aboveapplications. While the machine-accessible storage medium 624 is shownin an example implementation to be a single medium, the term“machine-accessible storage medium” should be taken to include a singlemedium or multiple media (e.g., a centralized or distributed database,and/or associated caches and servers) that store the one or more sets ofinstructions. The term “machine-accessible storage medium” shall also betaken to include any medium that is capable of storing, encoding orcarrying a set of instruction for execution by the machine and thatcause the machine to perform any one or more of the methodologies of thedisclosure. The term “machine-accessible storage medium” shallaccordingly be taken to include, but not be limited to, solid-statememories, and optical and magnetic media.

In the foregoing description, numerous details are set forth. It will beapparent, however, that the disclosure may be practiced without thesespecific details. In some instances, well-known structures and devicesare shown in block diagram form, rather than in detail, in order toavoid obscuring the disclosure.

Some portions of the detailed descriptions which follow are presented interms of algorithms and symbolic representations of operations on databits within a computer memory. These algorithmic descriptions andrepresentations are the means used by those skilled in the dataprocessing arts to most effectively convey the substance of their workto others skilled in the art. An algorithm is here, and generally,conceived to be a self-consistent sequence of steps leading to a desiredresult. The steps are those requiring physical manipulations of physicalquantities. Usually, though not necessarily, these quantities take theform of electrical or magnetic signals capable of being stored,transferred, combined, compared, and otherwise manipulated. It hasproven convenient at times, principally for reasons of common usage, torefer to these signals as bits, values, elements, symbols, characters,terms, numbers, or the like.

It should be borne in mind, however, that all of these and similar termsare to be associated with the appropriate physical quantities and aremerely convenient labels applied to these quantities. Unlessspecifically stated otherwise, as apparent from the followingdiscussion, it is appreciated that throughout the description,discussions utilizing terms such as “sending”, “receiving”, “attaching”,“forwarding”, “caching”, “referencing”, “determining”, “providing”,“implementing”, “translating”, “causing”, or the like, refer to theaction and processes of a computer system, or similar electroniccomputing device, that manipulates and transforms data represented asphysical (electronic) quantities within the computer system's registersand memories into other data similarly represented as physicalquantities within the computer system memories or registers or othersuch information storage, transmission or display devices.

The disclosure also relates to an apparatus for performing theoperations herein. This apparatus may be specially constructed for thepurposes, or it may comprise a general purpose computer selectivelyactivated or reconfigured by a computer program stored in the computer.Such a computer program may be stored in a machine readable storagemedium, such as, but not limited to, any type of disk including floppydisks, optical disks, CD-ROMs, and magnetic-optical disks, read-onlymemories (ROMs), random access memories (RAMs), EPROMs, EEPROMs,magnetic or optical cards, or any type of media suitable for storingelectronic instructions, each coupled to a computer system bus.

The algorithms and displays presented herein are not inherently relatedto any particular computer or other apparatus. Various general purposesystems may be used with programs in accordance with the teachingsherein, or it may prove convenient to construct more specializedapparatus to perform the method steps. The structure for a variety ofthese systems will appear as set forth in the description below. Inaddition, the disclosure is not described with reference to anyparticular programming language. It will be appreciated that a varietyof programming languages may be used to implement the teachings of thedisclosure as described herein.

The disclosure may be provided as a computer program product, orsoftware, that may include a machine-readable medium having storedthereon instructions, which may be used to program a computer system (orother electronic devices) to perform a process according to thedisclosure. A machine-readable medium includes any mechanism for storingor transmitting information in a form readable by a machine (e.g., acomputer). For example, a machine-readable (e.g., computer-readable)medium includes a machine (e.g., a computer) readable storage medium(e.g., read only memory (“ROM”), random access memory (“RAM”), magneticdisk storage media, optical storage media, flash memory devices, etc.),etc.

Whereas many alterations and modifications of the disclosure will nodoubt become apparent to a person of ordinary skill in the art afterhaving read the foregoing description, it is to be understood that anyparticular implementation shown and described by way of illustration isin no way intended to be considered limiting. Therefore, references todetails of various implementations are not intended to limit the scopeof the claims, which in themselves recite only those features regardedas the disclosure.

What is claimed is:
 1. A method, comprising: receiving, by a processingdevice of a node of a multi-tenant Platform-as-a-Service (PaaS) system,an indication to initiate an update process for cartridges of the node;receiving, by the processing device, a cartridge file package forstorage at the node; storing, by the processing device, the cartridgefile package to a cartridge library of the node; and maintaining, by theprocessing device, the cartridge file package in the cartridge libraryas a newest version of a template cartridge that corresponds to thecartridge file package.
 2. The method of claim 1, wherein the cartridgeseach provide functionality to execute applications on the multi-tenantPaaS system, the functionality comprising at least one of configurationtemplates, scripts, dependencies, or features to add to theapplications.
 3. The method of claim 1, wherein the cartridge librarymaintains one or more previous versions of the template cartridge thatare isolated from one another.
 4. The method of claim 1, furthercomprising, for each cartridge instance deployed on the node, when thecartridge instance implements an older version of the templatecartridge, updating the cartridge instance with the newest version ofthe template cartridge.
 5. The method of claim 4, wherein the cartridgeinstance is not updated to the newest version of the template cartridgewhen the cartridge instance is flagged for no upgrades.
 6. The method ofclaim 5, wherein an application utilizing the cartridge instance flagsthe cartridge instance for no upgrades.
 7. The method of claim 4,wherein when the cartridge instance comprises a pointer to a userdirectory of the template cartridge, updating the pointer to reference auser directory of the newest version of the template cartridge.
 8. Themethod of claim 7, wherein the user directory comprises binaries of thecartridge instance that are executed by an application utilizing thecartridge instance.
 9. A system, comprising: a memory; and a processingdevice communicably coupled to the memory; and a node update componentexecutable from the memory by the processing device, the node updatecomponent to: receive an indication to initiate an update process forcartridges of a node comprising the node update component, wherein thenode is part of a multi-tenant Platform-as-a-Service (PaaS) system;receive a cartridge file package for storage at the node ; store thecartridge file package to a cartridge library of the node; and maintainthe cartridge file package in the cartridge library as a newest versionof a template cartridge that corresponds to the cartridge file package.10. The system of claim 9, wherein the cartridges each providefunctionality to execute applications on the multi-tenant PaaS system,the functionality comprising at least one of configuration templates,scripts, dependencies, or features to add to the applications.
 11. Thesystem of claim 9, wherein the cartridge library maintains one or moreprevious versions of the template cartridge that are isolated from oneanother.
 12. The system of claim 9, wherein the node update componentfurther to, for each cartridge instance deployed on the node, when thecartridge instance implements an older version of the templatecartridge, update the cartridge instance with the newest version of thetemplate cartridge.
 13. The system of claim 12, wherein the cartridgeinstance is not updated to the newest version of the template cartridgewhen the cartridge instance is flagged for no upgrades.
 14. The systemof claim 13, wherein an application utilizing the cartridge instanceflags the cartridge instance for no upgrades.
 15. The system of claim12, wherein when the cartridge instance comprises a pointer to a userdirectory of the template cartridge, updating the pointer to reference auser directory of the newest version of the template cartridge.
 16. Anon-transitory machine-readable storage medium including instructionsthat, when accessed by a processing device, cause the processing deviceto perform operations comprising: receiving, by the processing device ofa node of a multi-tenant Platform-as-a-Service (PaaS) system, anindication to initiate an update process for cartridges of the node;receiving, by the processing device, a cartridge file package forstorage at the node; storing, by the processing device, the cartridgefile package to a cartridge library of the node; and maintaining, by theprocessing device, the cartridge file package in the cartridge libraryas a newest version of a template cartridge that corresponds to thecartridge file package.
 17. The non-transitory machine -readable storagemedium of claim 16, wherein the cartridges each provide functionality toexecute applications on the multi-tenant PaaS system, the functionalitycomprising at least one of configuration templates, scripts,dependencies, or features to add to the applications.
 18. Thenon-transitory machine -readable storage medium of claim 16, wherein thecartridge library maintains one or more previous versions of thetemplate cartridge that are isolated from one another.
 19. Thenon-transitory machine -readable storage medium of claim 16, furthercomprising, for each cartridge instance deployed on the node, when thecartridge instance implements an older version of the templatecartridge, updating the cartridge instance with the newest version ofthe template cartridge, wherein the cartridge instance is not updated tothe newest version of the template cartridge when the cartridge instanceis flagged for no upgrades.
 20. The non-transitory machine -readablestorage medium of claim 19, wherein when the cartridge instancecomprises a pointer to a user directory of the template cartridge,updating the pointer to reference a user directory of the newest versionof the template cartridge, wherein the user directory comprises binariesof the cartridge instance that are executed by an application utilizingthe cartridge instance.